import { Button, Grid, Tab, Tabs, Typography } from '@mui/material';
import { Box, Container } from '@mui/system';
import { dehydrate, QueryClient } from '@tanstack/react-query';
import Image from 'next/image';
import { useRouter } from 'next/router';
import React, { useState } from 'react';
import Loader from '../../components/loader/Loader';
import TabPanel from '../../components/tab-panel/TabPanel';
import { useFetchSingleProduct } from '../../hooks/useFetchProductData';
import { getProductData } from '../../requests/products/producDataRequest';
import { useStore, useStoreUpdate } from '../../store/cart-context';
const SingleProduct = () => {
const { addCartValue } = useStoreUpdate();
const { cartStorage } = useStore();
const router = useRouter();
const { customId } = router.query;
const { data, isLoading } = useFetchSingleProduct(customId);
// const productCategory = data?.product.category;
const [value, setValue] = useState(0);
const addProductToCart = (quantity) => addCartValue(data.product, quantity);
const inCart = cartStorage?.some(
(item) => item.product.customID === data?.product.customID
)
? true
: false;
const handleChange = (event, newValue) => {
setValue(newValue);
};
function a11yProps(index) {
return {
id: `simple-tab-${index}`,
'aria-controls': `simple-tabpanel-${index}`,
};
}
if (isLoading) {
return ;
}
// const productsToShow = (id) => {
// const filtered = shuffle(similarProducts?.productsByCategory)
// .filter((product) => product.customID !== id)
// .slice(0, 3)
// .map((item) => (
//
//
//
// ));
// return filtered;
// };
return (
{data.product.name}
{data.product.description}
${data.product.price}
{data.product.category}
Other Product You May Like
);
};
export const getServerSideProps = async (context) => {
const { params } = context;
const { customId } = params;
const queryClient = new QueryClient();
await queryClient.prefetchQuery(
['product', customId],
async () => await getProductData(customId)
);
return {
props: {
dehydratatedState: dehydrate(queryClient),
},
};
};
export default SingleProduct;